2oneweek.dev

10. Function Call & Arguments

    Tags

  • JavaScript
10. Function Call & Arguments thumbnail

JS에서 Argument 처리 구조

함수가 호출되면, 함수 안에서 arguments 오브젝트를 만든다. 그리고 argument 오브젝트에, 파라미터를 key-value 형태로 저장한다, 그러나 우리는 함수 호출시에 key 값을 따로 명시해주지 않는다.

js 엔진은, 0부터 파라미터 수만큼 key값을 부여하여 k/v 형태로 Argument 오브젝트에 저장한다. 이러한 형태를 Array-like라고 부른다.

function get() { return arguments; } console.log(get("A", "B")); //=> {0 : A, 1 : B}

엔진의 파라미터 처리

Array-like적인 argument 처리

  • key 값이 0부터 1씩 증가한다.
  • length 프로퍼티가 있어야 한다.
var get = function (one) { return one; }; get(77, 100);
  1. get() 함수를 호출하면서 77,100을 파라미터 값으로 넘긴다.
  2. 넘겨받은 값을 함수의 파라미터 이름에 설정
    • one 과 77이 맵핑된다.
    • lexical environment에 선언적 환경 레코드에 {one:77} 형태로 저장된다.(scope에 저장하는 것이다.)
    • return one 문장을 실행할 때는, one을 가지고 선언적 환경 레코드로 가서 식별자 해결을 한다. one이 scope에 존재하면 그 값을 가져와서 return 하는 것임
  3. argument 오브젝트를 생성한다.
  4. 파라미터수를 argument 오브젝트의 length 프로퍼티로 추가
  5. 넘겨받은 파라미터 수 만큼 반복하면서 array-like한 동작
    • {0:77}, {1:100} 형태로 argument 오브젝트에 저장한다.

이 모든 과정은 함수의 초기화 단계에서 실행한다.

Written by@2-one-week
현재 블로그 개발 중

GitHubLinkedIn